package com.fowo.api.model.wms.order;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * 销售出库单(wms) 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class WmsOrderImportPo {

  /** 所属订单管理 */
  @ExcelProperty("所属订单管理")
  @LongString(message = "所属订单管理数值格式不正确", label = "所属订单管理")
  private String parentNavSellOrder;

  /** 销售出库单号 */
  @ExcelProperty("*销售出库单号")
  @NotBlank(message = "销售出库单号不能为空")
  private String woNumber;

  /** 系统单号 */
  @ExcelProperty("系统单号")
  @Size(max = 50, message = "系统单号长度不能超过50")
  private String orderNumber;

  /** 波次号 */
  @ExcelProperty("波次号")
  @Size(max = 50, message = "波次号长度不能超过50")
  private String waveOrder;

  /** 状态 */
  @ExcelProperty("状态")
  @EnumsString(
    value = { "物流下单", "发货中", "已发货", "已删除", "已出库" },
    message = "状态只能是“物流下单”, “发货中”, “已发货”, “已删除”, “已出库”中的一个"
  )
  private String status;

  /** 平台单号 */
  @ExcelProperty("平台单号")
  @Size(max = 50, message = "平台单号长度不能超过50")
  private String platformOrderNo;

  /** 物流服务商 */
  @ExcelProperty("物流服务商")
  @Size(max = 50, message = "物流服务商长度不能超过50")
  private String logisticsProviderId;

  /** 物流方式 */
  @ExcelProperty("物流方式")
  @Size(max = 50, message = "物流方式长度不能超过50")
  private String logisticsTypeId;

  /** 标签 */
  @ExcelProperty("标签")
  @Size(max = 50, message = "标签长度不能超过50")
  private String tagNames;

  /** 店铺 */
  @ExcelProperty("店铺")
  @Size(max = 50, message = "店铺长度不能超过50")
  private String sidShopName;

  @ExcelIgnore
  @Schema(title = "店铺")
  private String sid;

  /** 站点名称 */
  @ExcelProperty("站点名称")
  @Size(max = 50, message = "站点名称长度不能超过50")
  private String siteText;

  /** 平台名称 */
  @ExcelProperty("平台名称")
  @Size(max = 50, message = "平台名称长度不能超过50")
  private String platformName;

  /** 出库时间 */
  @ExcelProperty("出库时间")
  @DateTimeString(message = "出库时间不是有效的时间日期格式")
  private String deliveredAt;

  /** 发货人 */
  @ExcelProperty("发货人")
  @Size(max = 50, message = "发货人长度不能超过50")
  private String deliverer;

  /** 国家 */
  @ExcelProperty("国家")
  @Size(max = 50, message = "国家长度不能超过50")
  private String targetCountry;

  /** 收件人税号 */
  @ExcelProperty("收件人税号")
  @Size(max = 50, message = "收件人税号长度不能超过50")
  private String recipientTaxNo;

  /** 运单号 */
  @ExcelProperty("运单号")
  @Size(max = 50, message = "运单号长度不能超过50")
  private String waybillNo;

  /** 跟踪号 */
  @ExcelProperty("跟踪号")
  @Size(max = 50, message = "跟踪号长度不能超过50")
  private String trackingNo;

  /** 仓库 */
  @ExcelProperty("仓库")
  @Size(max = 50, message = "仓库长度不能超过50")
  private String widName;

  @ExcelIgnore
  @Schema(title = "仓库")
  private String wid;

  /** 预估运费 */
  @ExcelProperty("预估运费")
  @DecimalString(message = "预估运费小数格式不正确", label = "预估运费")
  private String logisticsEstimatedFreight;

  /** 物流运费 */
  @ExcelProperty("物流运费")
  @DecimalString(message = "物流运费小数格式不正确", label = "物流运费")
  private String logisticsFreight;

  /** 库存流水出库时间 */
  @ExcelProperty("库存流水出库时间")
  @DateTimeString(message = "库存流水出库时间不是有效的时间日期格式")
  private String stockDeliveredAt;

  /** 是否验货 */
  @ExcelProperty("是否验货")
  private String isCheck;

  /** 是否称重 */
  @ExcelProperty("是否称重")
  private String isWeigh;

  /** 面单是否打印 */
  @ExcelProperty("面单是否打印")
  private String isSurfacePrint;

  /** 订单是否打印 */
  @ExcelProperty("订单是否打印")
  private String isorderPrint;

  /** 包裹尺寸长 */
  @ExcelProperty("包裹尺寸长")
  @DecimalString(message = "包裹尺寸长小数格式不正确", label = "包裹尺寸长")
  private String pkgLength;

  /** 包裹尺寸高 */
  @ExcelProperty("包裹尺寸高")
  @DecimalString(message = "包裹尺寸高小数格式不正确", label = "包裹尺寸高")
  private String pkgHeight;

  /** 包裹实重 */
  @ExcelProperty("包裹实重")
  @DecimalString(message = "包裹实重小数格式不正确", label = "包裹实重")
  private String pkgRealWeight;

  /** 估算重量 */
  @ExcelProperty("估算重量")
  @DecimalString(message = "估算重量小数格式不正确", label = "估算重量")
  private String pkgWeight;

  /** 订单类型 */
  @ExcelProperty("订单类型")
  @EnumsString(
    value = { "一单一件", "多品多件【原一单多件】", "单品多件" },
    message = "订单类型只能是“一单一件”, “多品多件【原一单多件】”, “单品多件”中的一个"
  )
  private String orderType;

  /** 收件人 */
  @ExcelProperty("收件人")
  @Size(max = 50, message = "收件人长度不能超过50")
  private String recipient;

  /** 电话 */
  @ExcelProperty("电话")
  @Size(max = 50, message = "电话长度不能超过50")
  private String phone;

  /** 邮编 */
  @ExcelProperty("邮编")
  @Size(max = 50, message = "邮编长度不能超过50")
  private String zipCode;

  /** 收货地址 */
  @ExcelProperty("收货地址")
  @Size(max = 50, message = "收货地址长度不能超过50")
  private String address;

  /** 订单金额 */
  @ExcelProperty("订单金额")
  @Size(max = 50, message = "订单金额长度不能超过50")
  private String orderOriginAmount;

  /** 发货时限 */
  @ExcelProperty("发货时限")
  @Size(max = 50, message = "发货时限长度不能超过50")
  private String deliverDeadline;

  /** 客服备注 */
  @ExcelProperty("客服备注")
  @Size(max = 50, message = "客服备注长度不能超过50")
  private String orderCustomerServiceNotes;

  /** 买家留言 */
  @ExcelProperty("买家留言")
  @Size(max = 50, message = "买家留言长度不能超过50")
  private String orderBuyerNotes;

  /** 包裹体积 */
  @ExcelProperty("包裹体积")
  @DecimalString(message = "包裹体积小数格式不正确", label = "包裹体积")
  private String pkgVolume;

  /** 加工单号 */
  @ExcelProperty("加工单号")
  @Size(max = 50, message = "加工单号长度不能超过50")
  private String processSn;

  /** 订单来源 */
  @ExcelProperty("订单来源")
  @Size(max = 50, message = "订单来源长度不能超过50")
  private String orderFrom;

  /** 批次号 */
  @ExcelProperty("批次号")
  @Size(max = 50, message = "批次号长度不能超过50")
  private String batchNo;

  /** 拣货人 */
  @ExcelProperty("拣货人")
  @Size(max = 50, message = "拣货人长度不能超过50")
  private String picker;

  /** 物流下单状态 */
  @ExcelProperty("物流下单状态")
  @EnumsString(
    value = {
      "待导入",
      "物流待下单",
      " 物流下单中",
      "下单异常",
      " 下单完成",
      "待海外仓下单",
      "海外仓下单中",
      "待导入国内物流",
      "物流取消中",
      "物流取消异常",
      "物流取消完成",
    },
    message = "物流下单状态只能是“待导入”, “物流待下单”, “ 物流下单中”, “下单异常”, “ 下单完成”, “待海外仓下单”, “海外仓下单中”, “待导入国内物流”, “物流取消中”, “物流取消异常”, “物流取消完成”中的一个"
  )
  private String logisticsStatus;

  /** 物流下单消息 */
  @ExcelProperty("物流下单消息")
  @Size(max = 50, message = "物流下单消息长度不能超过50")
  private String logisticsMessage;

  /** 订单币种 */
  @ExcelProperty("订单币种")
  @Size(max = 50, message = "订单币种长度不能超过50")
  private String orderCurrencyCode;

  /** 店铺名称 */
  @ExcelProperty("店铺名称")
  @Size(max = 50, message = "店铺名称长度不能超过50")
  private String sellerName;

  /** 物流服务商名称 */
  @ExcelProperty("物流服务商名称")
  @Size(max = 50, message = "物流服务商名称长度不能超过50")
  private String logisticsProviderName;

  /** 物流方式名称 */
  @ExcelProperty("物流方式名称")
  @Size(max = 50, message = "物流方式名称长度不能超过50")
  private String logisticsTypeName;

  /** 包裹尺寸宽 */
  @ExcelProperty("包裹尺寸宽")
  @DecimalString(message = "包裹尺寸宽小数格式不正确", label = "包裹尺寸宽")
  private String pkgWidth;

  /** 包裹计费重 */
  @ExcelProperty("包裹计费重")
  @DecimalString(message = "包裹计费重小数格式不正确", label = "包裹计费重")
  private String pkgFeeWeight;

  /** 预估重量单位 */
  @ExcelProperty("预估重量单位")
  @Size(max = 50, message = "预估重量单位长度不能超过50")
  private String pkgWeightUnit;

  /** 包裹实重单位 */
  @ExcelProperty("包裹实重单位")
  @Size(max = 50, message = "包裹实重单位长度不能超过50")
  private String pkgRealWeightUnit;

  /** 包裹计费重单位 */
  @ExcelProperty("包裹计费重单位")
  @Size(max = 50, message = "包裹计费重单位长度不能超过50")
  private String pkgFeeWeightUnit;

  /** 包裹尺寸单位 */
  @ExcelProperty("包裹尺寸单位")
  @Size(max = 50, message = "包裹尺寸单位长度不能超过50")
  private String pkgSizeUnit;

  /** 预估运费币种 */
  @ExcelProperty("预估运费币种")
  @Size(max = 50, message = "预估运费币种长度不能超过50")
  private String logisticsEstimatedFreightCurrencyCode;

  /** 物流运费币种 */
  @ExcelProperty("物流运费币种")
  @Size(max = 50, message = "物流运费币种长度不能超过50")
  private String logisticsFreightCurrencyCode;

  /** 发件人税号 */
  @ExcelProperty("发件人税号")
  @Size(max = 50, message = "发件人税号长度不能超过50")
  private String senderTaxNo;

  /** 城市 */
  @ExcelProperty("城市")
  @Size(max = 50, message = "城市长度不能超过50")
  private String city;

  /** 省/州 */
  @ExcelProperty("省/州")
  @Size(max = 50, message = "省/州长度不能超过50")
  private String provinceState;

  /** 区/县 */
  @ExcelProperty("区/县")
  @Size(max = 50, message = "区/县长度不能超过50")
  private String districtCounty;

  /** 门牌号 */
  @ExcelProperty("门牌号")
  @Size(max = 50, message = "门牌号长度不能超过50")
  private String houseNumber;

  /** 是否操作库存 */
  @ExcelProperty("是否操作库存")
  @EnumsString(
    value = { "已操作", "未操作" },
    message = "是否操作库存只能是“已操作”, “未操作”中的一个"
  )
  private String isOperation;

  /** 仓库名称 */
  @ExcelProperty("仓库名称")
  @Size(max = 50, message = "仓库名称长度不能超过50")
  private String wName;

  /** 领星销售出库单ID */
  @ExcelProperty("领星销售出库单ID")
  @IntegerString(
    message = "领星销售出库单ID数值格式不正确",
    label = "领星销售出库单ID",
    min = 0
  )
  private String woId;

  /** 卖家邮箱 */
  @ExcelProperty("卖家邮箱")
  @Size(max = 50, message = "卖家邮箱长度不能超过50")
  private String buyerEmail;
}
